(fset 'hanoi #[(nrings) "┴X½ä┬├!ê─ëë┼╞ !╟╞ ! \n╦\\S╠_═\\Y½çV¼ó╨ ê┼╞ !ëY½î╟╞ !ëV¼ê┬╤#ê╠Ñ\n╥\n╙\"┴U¼à\nT\n╘ZV½à╘Z¬ü * Z╙Z\n B\n╘_ B\n╒_ B╓─\"┴┴W½ª▄─▌ë╘\\\\▐\\\"▌ë╘\\\\▀\"#IêTë¬V)αß!ê─\"πp!êΣ ê┴ W½æTσ▀S\"êµcê¬h)στS\"ê╙((╠W½┤Θ(\n_\"ê(╦\\( W½ûTΩ╙!êδcê∞╙!êφ╙!ê¬c)¬F)┴─.ëW½╕Z╙ZHë.┴ ZIêΘA@ZZ\"ê∩.≡─#êëASíêTë¬D*≡\"±┴!ê≥S$êebê≤⌠!ê≡\"⌡÷ !ê±┴!.\nç" [nrings 0 error "Negative number of rings" nil window-height selected-window window-width fly-row floor-row pole-spacing 2 6 7 w h delete-other-windows "Screen is too small (need at least %dx%d)" logand 1 3 5 make-vector rings pole-3 pole-2 pole-1 i vector make-string 48 32 switch-to-buffer "*Hanoi*" buffer-read-only buffer-disable-undo erase-buffer insert-char 10 61 n hanoi-topos next-line 124 delete-char backward-char ring hanoi-draw-ring t sit-for hanoi0 message "Done" set-buffer-modified-p buffer-modified-p] 10 "\
Towers of Hanoi diversion. Argument is number of rings." (byte-code "¼â┴¬â┬!Cç" [current-prefix-arg 3 prefix-numeric-value] 2)])
(byte-code "└┴Mê┬├Mê─┼Mç" [hanoi0 #[(n from to work) "└ ½å┴┬├C\"ç┼W«¥╞S $ê╩ #ê╞S $ç" [input-pending-p signal quit "I can tell you've had enough" n 0 hanoi0 from work to hanoi-move-ring] 5] hanoi-move-ring #[(n from to) " H┬ë┼H@ Z╟Z@ Z╟ZA \n═\"êV½£╧┬╨#ê╤╟!ê╧╨┬#ê╥┼!êSë¬_ëATíê\nܼ─\nV½¢╟ê╙╘!ê┼yê╒ë▒ê╥┼!êTT¬W\nW½P┼yê╓╘!ê╟ê╒ë▒ê╥┼!êSS¬5═\n\"ê W½á╧┬V#ê╫╟!ê╧╨┬#ê╥┼!êTë¬[┼ IêëASí.ç" [rings n nil buffer-read-only ring 0 from 1 to dst-row dst-col col row hanoi-topos fly-row hanoi-draw-ring t previous-line sit-for delete-backward-char 2 32 delete-char next-line] 6] hanoi-draw-ring #[(ring f1 f2) "è½à ┬H¬â ├HëG╞!êcê¡Ä╚┬\\├Ñ!ê╞┬!ê╔c+ç" [f1 ring 1 2 string len delete-char f2 backward-char 124] 4]] 2)